/*
 * Copyright the original author or authors.
 * 
 * Licensed under the MOZILLA PUBLIC LICENSE, Version 1.1 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.mozilla.org/MPL/MPL-1.1.html
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
 
package com.airlogger.log.control
{
	import com.airlogger.log.event.LevelEvent;
	import com.airlogger.log.model.AirLoggerModelList;
	import com.airlogger.log.model.LogModel;
	import com.airlogger.log.model.UIModel;
	import com.bourre.commands.AbstractCommand;
	import com.bourre.commands.Command;
	
	import flash.events.Event;

	public class FilterLog extends AbstractCommand implements Command
	{
		override public function execute( e : Event = null ) : void
		{
			var evt : LevelEvent = e as LevelEvent;
			if( getOwner().getModelLocator().isRegistered( evt.id ) )
			{
				var logmodel : LogModel = getOwner().getModelLocator().getModel( evt.id ) as LogModel;
				var uimodel : UIModel = getOwner().getModelLocator().getModel( AirLoggerModelList.UI ) as UIModel;
				
				if( evt.level.getLevel() != logmodel.getLogFilter().getLevel() )
				{
					logmodel.setLogFilter( evt.level );
					
					if( evt.id == uimodel.getFocus() )
					{
						uimodel.fireOnRefreshEvent();
					}
				}
			}
		}
	}
}